/**
 * @param {number} n
 * @return {number}
 */
var cuttingRope = function (n) {
	let arr = [0, 0, 1, 2];
	if (n < 4) {
		return arr[n];
	}
	// 剪长度为3的
	let times3 = Math.floor(n / 3);

	// 当最后绳子长度为4时，不能剪3，要剪成 2，2
	if (n - times3 * 3 === 1) {
		times3--;
	}

	// 剪长度为2的
	let times2 = (n - times3 * 3) / 2;

	// 防止溢出，每次都要取模
	let res = 1;
	while (times3) {
		res = res % (1e9 + 7) * 3;
		times3--;
	}
	return res * (2 ** times2);
};
console.log(cuttingRope(90));
// console.log(Math.pow(3, 40) % (1e9 + 7))